<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // 有一个数组['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']，要求去除数组中重复的元素。
        var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
        // 方法一：
        // 思路：
        // 1.怎么判断数组里是否有重复的元素呢？
        //   我们可以利用indexOf() 和 lastIndexOf()  如果 indexOf(元素) < lastIndexOf(元素) 就表示一个元素有两个索引号，那么就一定会有重复的元素
        // 2.怎么删除重复元素呢？
        //   利用splice(最后一个元素的索引号, 1) 表示删除后面重复的元素
        // 3.不知道该元素重复了几次，那该删多少次呢？
        //   我们可以利用死循环让 当 indexOf(元素) < lastIndexOf(元素) 时删除元素一直执行，不满足条件时就用break终止死循环
        // 4.最后再用for循环遍历数组中每一个元素
        // 5.用函数封装起来
        function name1(arr) {
            for (var i = 0; i < arr.length; i++) {
                while (true) {
                    if (arr.indexOf(arr[i]) < arr.lastIndexOf(arr[i])) {
                        var num = arr.lastIndexOf(arr[i]);
                        arr.splice(num, 1);
                    } else {
                        break;
                    }
                }
            }
            return arr;
        }
        var re = new name1(arr);
        console.log(re);

        // 方法二
        // 思路：
        // 1.目标：把旧数组里面不重复的元素选取出来放到新数组中，重复的元素只保留一个，放到新数组中去重。
        // 2.核心算法：我们遍历旧数组，然后拿着旧数组元素去查询新数组，如果该元素在新元素里面没有出现过，我们就添加，否则不添加。
        // 3.我们怎么知道元素没有存在？利用新数组indexOf(数组元素) 返回是 -1 就说明新数组里面没有该元素
        function name2(arr) {
            var newArr = [];

            for (var i = 0; i < arr.length; i++) {
                if (newArr.indexOf(arr[i]) === -1) {
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
        var re2 = new name2(arr);
        console.log(re2);
    </script>
</head>

<body>

</body>

</html>